<?php
// 更新账号信息
// 假设 $accountId 是通过 $_POST 获取到的账号ID
$accountId = $_POST['accountId'];

// 假设 $editedUsername、$editedPhone、$editedPassword、$editedRole、$editedStatus 是通过 $_POST 获取到的要更新的数据
$editedUsername = $_POST['editedUsername'];
$editedPhone = $_POST['editedPhone'];
$editedPassword = $_POST['editedPassword'];
$editedRole = $_POST['editedRole'];
$editedStatus = $_POST['editedStatus'];

// 数据库连接信息
require_once 'databaseConnection.php';

try {
    $conn = connectToDatabase();
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 先从数据库获取当前密码
    $sql = "SELECT password FROM account WHERE account_id = :accountId";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':accountId', $accountId);
    $stmt->execute();
    $result = $stmt->fetch();

    // 获取原始的哈希密码
    $originalHashedPassword = $result['password'];

    // 判断是否需要更新密码
    if (!empty($editedPassword)) {
        // 判断用户输入的密码和原始的哈希密码是否一致
        if ($editedPassword != $originalHashedPassword) {
            // 用户输入的密码已经修改，将输入的密码转换为哈希值
            $hashedPassword = password_hash($editedPassword, PASSWORD_DEFAULT);
        } else {
            // 用户输入的密码和原始的哈希密码一致，不需要更新密码
            $hashedPassword = $originalHashedPassword;
        }
    } else {
        // 用户没有输入新密码，不更新密码字段
        $hashedPassword = $originalHashedPassword;
    }

    // 更新账号信息，包括密码字段
    $sql = "UPDATE account SET username = :username, phone = :phone, password = :password, role = :role, status = :status WHERE account_id = :accountId";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':username', $editedUsername);
    $stmt->bindParam(':phone', $editedPhone);
    $stmt->bindParam(':password', $hashedPassword);
    $stmt->bindParam(':role', $editedRole);
    $stmt->bindParam(':status', $editedStatus);
    $stmt->bindParam(':accountId', $accountId);
    $stmt->execute();

    // 返回成功消息给前端
    echo "账号信息已成功更新";
} catch (PDOException $e) {
    die("连接失败: " . $e->getMessage());
}

$conn = null;
